<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 30-03-2015 (Verificacion Parcial)
class AsignacionDocente extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las asignaciones docentes activas o inactivas pero NO las borradas (-1) segun los filtros aplicados 
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todas las asignaciones docentes existentes del ciclo vigente
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo las asignaciones del ciclo en cuestion.
	//Lo mismo ocurre con el curso, la division y la asignatura.
	//Si idDocente es distinto de cero, hay que filtrar por el docente tmb.
	function consultar($idCicloLectivo=null, $idCurso=null, $idDivision=null, $idAsignatura=null, $idDocente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor'))){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el curso, la division, la asignatura y el docente
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idDivision) && $idDivision>=0 && is_numeric($idAsignatura) && $idAsignatura>=0 && is_numeric($idDocente) && $idDocente>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de las divisiones
				$this->load->model('m_division');
				
				//Busco a la division para comprobar que existe
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de los docentes
				$this->load->model('m_docente');
				
				//Busco al docente para comprobar que existe
				$docente = $this->m_docente->get($idDocente);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el curso, division, asignatura y docente
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($curso->num_rows() == 1 || $idCurso==0) && ($division->num_rows() == 1 || $idDivision==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0) && ($docente->num_rows() == 1 || $idDocente==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del curso
					$datos['idCursoSel'] = $idCurso;
					
					//Le paso a la vista el id de la division
					$datos['idDivisionSel'] = $idDivision;
					
					//Le paso a la vista el id de la asignatura
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Le paso a la vista el id del docente
					$datos['idDocenteSel'] = $idDocente;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a los cursos, divisiones y asignaturas
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion1 = "";
					$restriccion2 = "";
					$restriccion3 = "";
					$restriccion4 = "";
					$restriccion5 = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}
					
					$restriccion2 = " AND division.idCurso=".$idCurso;
					$restriccion3 = " AND asignatura.idDivision=".$idDivision;
					$restriccion4 = " AND asignatura.idAsignatura=".$idAsignatura;
					
					if($idDocente!=0){
						$restriccion5 = " AND docente.idDocente=".$idDocente;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos
					$this->load->model('m_curso');
					
					//Busco todos los cursos activos segun las restricciones
					$listadoCursos = $this->m_curso->buscarActivos($restriccion1);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo de filtrado
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las divisiones registradas para pedirle un listado con todas ellas
					$this->load->model('m_division');
					
					//Busco todas las divisiones activas segun las restricciones
					$listadoDivisiones = $this->m_division->buscarActivos($restriccion1 . $restriccion2);
					
					//Le paso el listado de todas las divisiones a la vista para que los muestre en un combo
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaturas registradas para pedirle un listado con todos ellos
					$this->load->model('m_asignatura');
					
					//Busco todos las asiganturas segun las restricciones
					$listadoAsignaturas = $this->m_asignatura->buscarActivos($restriccion1 . $restriccion2 . $restriccion3);
					
					//Le paso el listado de todas las asignaturas a la vista para que los muestre en un combo
					$datos['asignaturas'] = $listadoAsignaturas;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los docentes registrados para pedirle un listado con todos ellos
					$this->load->model('m_docente');
					
					//Busco todos los docentes segun las restricciones
					$listadoDocentes = $this->m_docente->buscarActivos();
					
					//Le paso el listado de todas los docentes a la vista para que los muestre en un combo
					$datos['docentes'] = $listadoDocentes;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					if($idCurso==0 || $idDivision==0 || $idAsignatura==0){
						$restriccion2 = "";
						$restriccion3 = "";
						$restriccion4 = "";
					}
					
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todos ellos
					$this->load->model('m_asignacion_docente');
					
					//Busco todos las asignaciones segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscar($restriccion1 . $restriccion2 . $restriccion3 . $restriccion4 . $restriccion5);
					
					//Le paso el listado de todas las asignaciones a la vista para que los muestre en una tabla
					$datos['asignaciones'] = $listadoAsignaciones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra la tabla de asignaciones docentes y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_asignaciones_docentes', $datos, true);
					
					//Cargo la vista principal con los datos de la vista consultar asignaciones
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar la asignacion pasada por la url
	//El segundo, tercer, cuarto, quinto y sexto parametro indica si hay que filtrar las asignaciones en el resultado
	function eliminar($idDxA=null, $idCicloLectivo=null, $idCurso=null, $idDivision=null, $idAsignatura=null, $idDocente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor'))){
			//Segunda comprobacion: Que idDxA pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para idCurso, idDivision, idAsignatua e idDocente.
			if(is_numeric($idDxA) && $idDxA>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idDivision) && $idDivision>=0 && is_numeric($idAsignatura) && $idAsignatura>=0 && is_numeric($idDocente) && $idDocente>=0){
				//Cargo el modelo donde estan los datos de las asignaciones registradas
				$this->load->model('m_asignacion_docente');
				
				//Busco a la asignacion que hay que eliminar
				$asignacion = $this->m_asignacion_docente->get($idDxA);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los cursos registrados
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de las divisiones registradas
				$this->load->model('m_division');
				
				//Busco a la division para comprobar que existe
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de las asignaturas registradas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de los docentes registrados
				$this->load->model('m_docente');
				
				//Busco al docente para comprobar que existe
				$docente = $this->m_docente->get($idDocente);
				
				//Tercera comprobacion: Que la asignacion sea existente. Ademas que el ciclo lectivo pasado por la url sea existente, o bien el ciclo lectivo sea cero. Lo mismo para el curso, division, asignatura y docente
				if($asignacion->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($curso->num_rows() == 1 || $idCurso==0) && ($division->num_rows() == 1 || $idDivision==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0) && ($docente->num_rows() == 1 || $idDocente==0)){
					//Elimino a la asignacion pasada por la url
					$respuesta = $this->m_asignacion_docente->eliminar($idDxA, $this->session->userdata('idUsuarioLog'));
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
															
					//Le paso a la vista el id del curso
					$datos['idCursoSel'] = $idCurso;
					
					//Le paso a la vista el id de la division
					$datos['idDivisionSel'] = $idDivision;
					
					//Le paso a la vista el id de la asignatura
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Le paso a la vista el id del docente
					$datos['idDocenteSel'] = $idDocente;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a los cursos, divisiones y asignaturas
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion1 = "";
					$restriccion2 = "";
					$restriccion3 = "";
					$restriccion4 = "";
					$restriccion5 = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}					
					
					$restriccion2 = " AND division.idCurso=".$idCurso;
					$restriccion3 = " AND asignatura.idDivision=".$idDivision;
					$restriccion4 = " AND asignatura.idAsignatura=".$idAsignatura;
										
					if($idDocente!=0){
						$restriccion5 = " AND docente.idDocente=".$idDocente;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos
					$this->load->model('m_curso');
					
					//Busco todos los cursos activos segun las restricciones
					$listadoCursos = $this->m_curso->buscarActivos($restriccion1);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las divisiones registrados para pedirle un listado con todas ellas
					$this->load->model('m_division');
					
					//Busco todas las divisiones activas segun las restricciones
					$listadoDivisiones = $this->m_division->buscarActivos($restriccion1 . $restriccion2);
					
					//Le paso el listado de todas las divisiones a la vista para que los muestre en un combo
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaturas registrados para pedirle un listado con todas ellas
					$this->load->model('m_asignatura');
					
					//Busco todos las asiganturas segun las restricciones
					$listadoAsignaturas = $this->m_asignatura->buscarActivos($restriccion1 . $restriccion2 . $restriccion3);
					
					//Le paso el listado de todas las asignaturas a la vista para que los muestre en una tabla
					$datos['asignaturas'] = $listadoAsignaturas;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los docentes registrados para pedirle un listado con todos ellos
					$this->load->model('m_docente');
					
					//Busco todos los docentes segun las restricciones
					$listadoDocentes = $this->m_docente->buscarActivos();
					
					//Le paso el listado de todas los docentes a la vista para que los muestre en un combo
					$datos['docentes'] = $listadoDocentes;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					if($idCurso==0 || $idDivision==0 || $idAsignatura==0){
						$restriccion2 = "";
						$restriccion3 = "";
						$restriccion4 = "";
					}
					
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todos ellos
					$this->load->model('m_asignacion_docente');
					
					//Busco todos las asignaciones segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscar($restriccion1 . $restriccion2 . $restriccion3 . $restriccion4 . $restriccion5);
					
					//Le paso el listado de todas las asignaciones a la vista para que los muestre en una tabla
					$datos['asignaciones'] = $listadoAsignaciones;
					
					//Cargo la vista donde se muestra la tabla de asignaciones
					$this->load->view('v_asignaciones_docentes', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Abre la pantalla con el formulario para crear una asignacion nueva
	function abrirPantallaCrear($idCicloLectivo=null, $idCurso=null, $idDivision=null, $idAsignatura=null, $idDocente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor'))){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el curso, division, asignatura y docente
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idDivision) && $idDivision>=0 && is_numeric($idAsignatura) && $idAsignatura>=0 && is_numeric($idDocente) && $idDocente>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que exista
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de las divisiones
				$this->load->model('m_division');
				
				//Busco a la division para comprobar que exista
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que exista
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de los docentes
				$this->load->model('m_docente');
				
				//Busco al docente para comprobar que exista
				$docente = $this->m_docente->get($idDocente);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el curso, division, asignatura y docente
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0)  && ($curso->num_rows() == 1 || $idCurso==0) && ($division->num_rows() == 1 || $idDivision==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0) && ($docente->num_rows() == 1 || $idDocente==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del curso
					$datos['idCursoSel'] = $idCurso;
					
					//Le paso a la vista el id de la division
					$datos['idDivisionSel'] = $idDivision;
					
					//Le paso a la vista el id de la asignatura
					$datos['idAsignaturaSel'] = $idAsignatura;
					
					//Le paso a la vista el id del docente
					$datos['idDocenteSel'] = $idDocente;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a los cursos, divisiones y asignaturas
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion1 = "";
					$restriccion2 = "";
					$restriccion3 = "";
					$restriccion4 = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}					
										
					$restriccion2 = " AND division.idCurso=".$idCurso;
					$restriccion3 = " AND asignatura.idDivision=".$idDivision;
										
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos
					$this->load->model('m_curso');
					
					//Busco todos los cursos activos segun las restricciones
					$listadoCursos = $this->m_curso->buscarActivos($restriccion1);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las divisiones registrados para pedirle un listado con todos ellos
					$this->load->model('m_division');
					
					//Busco todos las divisiones activas segun las restricciones
					$listadoDivisiones = $this->m_division->buscarActivos($restriccion1 . $restriccion2);
					
					//Le paso el listado de todas las divisiones a la vista para que los muestre en un combo
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaturas registradas para pedirle un listado con todos ellos
					$this->load->model('m_asignatura');
					
					//Si el docente esta seleccionado restringimos las asignaturas posibles para seleccionar.
					if($idDocente!=0){
						$restriccion4 = " AND asignatura.idAsignatura NOT IN (SELECT idAsignatura FROM docentexasignatura WHERE docentexasignatura.idDocente=".$idDocente." AND docentexasignatura.estado>-1)";
					}
					
					//Busco todos las asignaturas segun las restricciones
					$listadoAsignaturas = $this->m_asignatura->buscarActivos($restriccion1 . $restriccion2 . $restriccion3 . $restriccion4);
					
					//Le paso el listado de todas las asignaturas a la vista para que los muestre en un combo
					$datos['asignaturas'] = $listadoAsignaturas;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los docentes registrados para pedirle un listado con todos ellos
					$this->load->model('m_docente');
					
					//Busco todos los docentes segun las restricciones
					$listadoDocentes = $this->m_docente->buscarActivos();
					
					//Le paso el listado de todas los docentes a la vista para que los muestre en un combo
					$datos['docentes'] = $listadoDocentes;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los cargos docentes registrados para pedirle un listado con todos ellos
					$this->load->model('m_cargo_docente');
					
					//Busco todos los cargos docentes activos.
					$listadoCargos = $this->m_cargo_docente->buscarActivos();
					
					//Le paso el listado de todos los cargos docentes a la vista para que los muestre en un combo
					$datos['cargosDocentes'] = $listadoCargos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra el formulario para crear una asignacion y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_asignaciones_docentes_crear', $datos, true);
					
					//Cargo la vista principal con los datos de la vista para crear una asignacion
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro seleccionado no existe
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea realmente la asignacion. La respuesta se muestra en un iframe dentro del formulario
	function crear(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor'))){	   
			//Segunda comprobacion: Que se haya pasado por post la asignatura, docente y el estado de la asignacion a crear.
			if(is_numeric($this->input->post('asignatura',true)) && $this->input->post('asignatura',true)>0 && is_numeric($this->input->post('docente',true)) && $this->input->post('docente',true)>0 && is_numeric($this->input->post('cargo',true)) && $this->input->post('cargo',true)>0 && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($this->input->post('asignatura',true));
				
				//Cargo el modelo donde estan los datos de los docentes
				$this->load->model('m_docente');
				
				//Busco al docente para comprobar que existe
				$docente = $this->m_docente->get($this->input->post('docente',true));
				
				//Cargo el modelo donde estan los datos de los cargos docentes
				$this->load->model('m_cargo_docente');
				
				//Busco al cargo docente para comprobar que existe
				$cargoDocente = $this->m_cargo_docente->get($this->input->post('cargo',true));
				
				//Tercera comprobacion: Que la asignatura pasado por la url sea existente. Lo mismo para el docente y el cargo
				if($asignatura->num_rows() == 1 && $docente->num_rows() == 1 && $cargoDocente->num_rows() == 1){
					//Cargo el modelo donde estan los datos de las asignacion
					$this->load->model('m_asignacion_docente');
					
					//Verificamos si el docente ya esta asignado en la asignatura
					$asignacion = $this->m_asignacion_docente->get2($this->input->post('docente',true), $this->input->post('asignatura',true));
					
					//Si el docente no esta asignado lo asignamos caso contrario mostramos un mensaje
					if($asignacion->num_rows()==0){
						//Creamos la asignacion
						$resultado = $this->m_asignacion_docente->crear($this->input->post('docente',true), $this->input->post('asignatura',true), $this->input->post('cargo',true), $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
					
						if($resultado == 1){
							echo("<script> alert('La asignaci\u00f3n se ha creado correctamente.');</script>");
						}else{
							echo("<script> alert('La asignaci\u00f3n no se ha creado. Ha habido un error.');</script>");
						}
					}else{
						echo("<script> alert('La asignaci\u00f3n no se ha creado. El docente ya est\u00e1 asignado a la asignatura.');</script>");					
					}
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos de la asignacion pasada por la url
	function abrirPantallaModificar($idDxA=null, $idCicloLectivo=null, $idCurso=null, $idDivision=null, $idAsignatura=null, $idDocente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor'))){
			//Segunda comprobacion: Que idDxA pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el curso, division, asignatura y docente.
			if(is_numeric($idDxA) && $idDxA>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idDivision) && $idDivision>=0 && is_numeric($idAsignatura) && $idAsignatura>=0 && is_numeric($idDocente) && $idDocente>=0){
				//Cargo el modelo donde estan los datos de las asignaciones registradas
				$this->load->model('m_asignacion_docente');
				
				//Busco a la asignacion que hay que modificar
				$asignacion = $this->m_asignacion_docente->get($idDxA);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
												
				//Cargo el modelo donde estan los datos de los cursos registrados
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de las divisiones registradas
				$this->load->model('m_division');
				
				//Busco a la division para comprobar que existe
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de las asignaturas registradas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($idAsignatura);
				
				//Cargo el modelo donde estan los datos de los docentes registrados
				$this->load->model('m_docente');
				
				//Busco al docente para comprobar que existe
				$docente = $this->m_docente->get($idDocente);
				
				//Tercera comprobacion: Que la asignacion sea existente. Ademas que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el curso, division, asignatura y docente.
				if($asignacion->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($curso->num_rows() == 1 || $idCurso==0) && ($division->num_rows() == 1 || $idDivision==0) && ($asignatura->num_rows() == 1 || $idAsignatura==0) && ($docente->num_rows() == 1 || $idDocente==0)){
					//Le paso la asignacion a modificar a la vista
					$datos['asignacionSel'] = $asignacion;
					
					//Le paso el ciclo lectivo, curso, division, asignatura y docente que estaban seleccionados en la pantalla consultar
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idCursoSel'] = $idCurso;
					$datos['idDivisionSel'] = $idDivision;
					$datos['idAsignaturaSel'] = $idAsignatura;
					$datos['idDocenteSel'] = $idDocente;
					
					//Busco a la asignacion siguiente de la que hay que modificar
					$idAsignacionSig = $this->m_asignacion_docente->getContiguo($idDxA, 1, $idCicloLectivo, $idCurso, $idDivision, $idAsignatura, $idDocente);
					
					//Le paso la asignacion siguiente de la que hay que modificar a la vista
					$datos['idAsignacionSig'] = $idAsignacionSig;
					
					//Busco a la asignacion anterior de la que hay que modificar
					$idAsignacionAnt = $this->m_asignacion_docente->getContiguo($idDxA, -1, $idCicloLectivo, $idCurso, $idDivision, $idAsignatura, $idDocente);
					
					//Le paso la asignacion anterior de la que hay que modificar a la vista
					$datos['idAsignacionAnt'] = $idAsignacionAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones sobre los cursos. Hay que llenar el combo de cursos segun el ciclo  seleccionado
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($asignacion->row()->idCicloLectivo!=0){
						$restriccion = " AND curso.idCicloLectivo=".$asignacion->row()->idCicloLectivo;
					}
															
					//Busco todos los cursos segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoCursos = $this->m_curso->buscar($restriccion);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones sobre las divisiones. Hay que llenar el combo de divisiones segun el curso seleccionado
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($asignacion->row()->idCurso!=0){
						$restriccion = " AND curso.idCurso=".$asignacion->row()->idCurso;
					}
					
					//Busco todas las divisiones segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoDivisiones = $this->m_division->buscar($restriccion);
					
					//Le paso el listado de todas las divisiones a la vista para que los muestre en un combo
					$datos['divisiones'] = $listadoDivisiones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones sobre las asignaturas. Hay que llenar el combo de asignaturas segun la division seleccionada
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($asignacion->row()->idDivision!=0){
						$restriccion = " AND division.idDivision=".$asignacion->row()->idDivision;
					}
					
					//Si el docente esta seleccionado restringimos las asignaturas posibles para seleccionar.
					if($asignacion->row()->idDocente!=0 && $asignacion->row()->idAsignatura!=0){
						$restriccion .= " AND asignatura.idAsignatura NOT IN (SELECT idAsignatura FROM docentexasignatura WHERE docentexasignatura.idDocente=".$asignacion->row()->idDocente." AND docentexasignatura.idAsignatura<>".$asignacion->row()->idAsignatura." AND docentexasignatura.estado>-1)";
					}
					
					//Busco todos las asiganturas segun las restricciones
					$listadoAsignaturas = $this->m_asignatura->buscar($restriccion);
					
					//Le paso el listado de todas las asignaturas a la vista para que los muestre en un combo
					$datos['asignaturas'] = $listadoAsignaturas;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los docentes registrados para pedirle un listado con todos ellos
					$this->load->model('m_docente');
					
					//Busco todos los docentes activos e inactivos
					$listadoDocentes = $this->m_docente->buscar();
					
					//Le paso el listado de todas los docentes a la vista para que los muestre en un combo
					$datos['docentes'] = $listadoDocentes;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los cargos docentes registrados para pedirle un listado con todos ellos
					$this->load->model('m_cargo_docente');
					
					//Busco todos los cargos docentes activos e inactivos
					$listadoCargos = $this->m_cargo_docente->buscar();
					
					//Le paso el listado de todos los cargos docentes a la vista para que los muestre en un combo
					$datos['cargosDocentes'] = $listadoCargos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra el formulario para modificar una asignacion y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_asignaciones_docentes_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar una asignacion
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de una asignacion
	function modificar($idDxA=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor'))){	   
			//Segunda comprobacion: Que se haya pasado por post la asignatura, docente, cargo y el estado de la asignacion a modificar. 
			//Ademas que se haya pasado por la url el id de la asignacion a modificar
			if(is_numeric($idDxA) && $idDxA>0 && is_numeric($this->input->post('asignatura',true)) && $this->input->post('asignatura',true)>0 && is_numeric($this->input->post('docente',true)) && $this->input->post('docente',true)>0 && is_numeric($this->input->post('cargo',true)) && $this->input->post('cargo',true)>0 && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de las asignaciones registradas
				$this->load->model('m_asignacion_docente');
				
				//Busco a la asignacion que hay que modificar para comprobar que existe
				$asignacion = $this->m_asignacion_docente->get($idDxA);
				
				//Cargo el modelo donde estan los datos de las asignaturas
				$this->load->model('m_asignatura');
				
				//Busco a la asignatura para comprobar que existe
				$asignatura = $this->m_asignatura->get($this->input->post('asignatura',true));
				
				//Cargo el modelo donde estan los datos de los docentes
				$this->load->model('m_docente');
				
				//Busco al docente para comprobar que existe
				$docente = $this->m_docente->get($this->input->post('docente',true));
				
				//Cargo el modelo donde estan los datos de los cargos docentes
				$this->load->model('m_cargo_docente');
				
				//Busco al cargo docente para comprobar que existe
				$cargoDocente = $this->m_cargo_docente->get($this->input->post('cargo',true));
				
				//Tercera comprobacion: Que la asignacion pasada por la url sea existente. Lo mismo para la asignatura, docente y el cargo
				if($asignacion->num_rows() == 1 && $asignatura->num_rows() == 1 && $docente->num_rows() == 1 && $cargoDocente->num_rows() == 1){
					//Si el resultado es igual a cero es porque nada se modifico.									
					$resultado = 0;
					
					if($asignacion->row()->idDocente==$this->input->post('docente',true) && $asignacion->row()->idAsignatura==$this->input->post('asignatura',true)){
						//Modificamos la asignacion
						$resultado = $this->m_asignacion_docente->modificar2($idDxA, $this->input->post('cargo',true),  $this->input->post('estado',true));
					
						if($resultado == 1){
							echo("<script> alert('La asignaci\u00f3n se ha modificado correctamente.');</script>");
						}else{
							echo("<script> alert('La asignaci\u00f3n no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
						}
					}else{
						//Busco a la asignacion que hay que modificar para comprobar si existe o no ya.
						$asignacion2 = $this->m_asignacion_docente->get2($this->input->post('docente',true), $this->input->post('asignatura',true));
						
						//Si existe la asignacion no la debemos modificar.
						if($asignacion2->num_rows()==0){
							//Modificamos la asignacion
							$resultado = $this->m_asignacion_docente->modificar($idDxA, $this->input->post('docente',true), $this->input->post('asignatura',true), $this->input->post('cargo',true),  $this->input->post('estado',true));
						
							if($resultado == 1){
								echo("<script> alert('La asignaci\u00f3n se ha modificado correctamente.');</script>");
							}else{
								echo("<script> alert('La asignaci\u00f3n no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
							}
						}else{
							echo("<script> alert('La asignaci\u00f3n no se ha modificado ya que este docente ya est\u00e1 asignado a esta asignatura.');</script>");						
						}
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo SOLO se puede llamar con ajax
	//Este metodo se usa en el abm clases para crear o modificar una clase. Se llama cuando se cambia la seleccion del ciclo lectivo y hay que actualizar las asignaturas dictadas por el profesor en ese ciclo.
	function filtrar($idPersona=null, $idCicloLectivo=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idPersona sea numerico y mayor que cero. Que idCicloLectivo sea mayor o igual que cero.
			if(is_numeric($idPersona) && $idPersona>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0){
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para comprobar que existe
				$persona = $this->m_persona->get($idPersona);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Tercera comprobacion: Que la persona sea existente e igual a la logueada. Que el ciclo pasado pasado por la url sea existente o bien el id sea igual a cero.
				if($persona->num_rows() == 1 && $idPersona==$this->session->userdata('idPersonaLog') && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las asignaturas para buscar las dictadas por el docente
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restriccion al ciclo lectivo
					$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					
					//Restriccion de la persona logueada. En este caso un docente
					$restriccion .= " AND persona.idPersona=".$idPersona;
					
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todos ellos
					$this->load->model('m_asignacion_docente');
					
					//Busco todas las asignaturas segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscarActivos($restriccion);
					
					//Le paso el listado de todas las asignaciones a la vista para que los muestre en un combo seleccionable
					$datos['asignaciones'] = $listadoAsignaciones;
					
					//Cargo la vista donde se arma el combo
					$this->load->view('v_asignaciones_docentes_select',$datos);
				} else {
					//No se han pasado los parametros minimos necesarios.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();			
				}
			} else {
				//No se han pasado los parametros minimos necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();			
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
}